/**
 ******************************************************************************
 * @file           : bsp_dac_config.h
 * @brief          : DAC Configuration File (STM32H7xx)
 ******************************************************************************
 * @attention
 *
 * DAC配置文件
 * 包含引脚定义、通道配置等硬件相关参数
 * 用户根据实际硬件修改此文件
 *
 ******************************************************************************
 */

/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __BSP_DAC_CONFIG_H
#define __BSP_DAC_CONFIG_H

#ifdef __cplusplus
extern "C" {
#endif

/* Includes ------------------------------------------------------------------*/
#include "stm32h7xx.h"

/* Exported types ------------------------------------------------------------*/
/* Exported constants --------------------------------------------------------*/

/* ============================================================================ */
/*                       日志系统配置（改这里的数字）                             */
/* ============================================================================ */
/* 日志后端选择：1=EasyLogger, 2=printf, 0=关闭 */
#define DAC_USE_LOG     1

/* 根据配置自动定义日志宏 */
#if (DAC_USE_LOG == 1)
    /* 使用EasyLogger */
    #ifndef LOG_TAG
        #define LOG_TAG    "DAC"
    #endif
    #include "elog.h"
    
#elif (DAC_USE_LOG == 2)
    /* 使用printf */
    #include <stdio.h>
    #define log_i(fmt, ...)     printf(fmt "\r\n", ##__VA_ARGS__)
    #define log_w(fmt, ...)     printf("[WARN] " fmt "\r\n", ##__VA_ARGS__)
    #define log_e(fmt, ...)     printf("[ERROR] " fmt "\r\n", ##__VA_ARGS__)
    #define log_d(fmt, ...)     printf("[DEBUG] " fmt "\r\n", ##__VA_ARGS__)
    
#else
    /* 关闭日志 */
    #define log_i(fmt, ...)
    #define log_w(fmt, ...)
    #define log_e(fmt, ...)
    #define log_d(fmt, ...)
#endif

/* ============================================================================ */
/*                          硬件配置（用户可修改）                               */
/* ============================================================================ */

/* DAC外设配置 */
#define DAC_DACx                        DAC                                             /*!< 使用的DAC外设 */
#define DAC_DACx_CLK_ENABLE()           do{ __HAL_RCC_DAC12_CLK_ENABLE(); }while(0)     /*!< DAC时钟使能 */

/* DAC通道1配置（PA4） */
#define DAC_CH1_GPIO_PORT               GPIOA                                           /*!< 通道1端口 */
#define DAC_CH1_GPIO_PIN                GPIO_PIN_4                                      /*!< 通道1引脚 */
#define DAC_CH1_GPIO_CLK_ENABLE()       do{ __HAL_RCC_GPIOA_CLK_ENABLE(); }while(0)     /*!< 通道1时钟 */

/* DAC通道2配置（PA5） */
#define DAC_CH2_GPIO_PORT               GPIOA                                           /*!< 通道2端口 */
#define DAC_CH2_GPIO_PIN                GPIO_PIN_5                                      /*!< 通道2引脚 */
#define DAC_CH2_GPIO_CLK_ENABLE()       do{ __HAL_RCC_GPIOA_CLK_ENABLE(); }while(0)     /*!< 通道2时钟 */

/* ============================================================================ */
/*                          功能配置（用户可修改）                               */
/* ============================================================================ */

/* DAC分辨率 */
#define DAC_RESOLUTION                  12                  /*!< DAC分辨率(12位) */
#define DAC_MAX_VALUE                   4095                /*!< DAC最大值(2^12-1) */

/* DAC参考电压 */
#define DAC_VREF                        3.3f                /*!< DAC参考电压(V) */


/* Exported macro ------------------------------------------------------------*/
/* Exported variables --------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/

#ifdef __cplusplus
}
#endif

#endif /* __BSP_DAC_CONFIG_H */
